package club.janna.jrpc.register;

import java.net.URI;
import java.util.Set;

/**
 * @author Panbo.Guo
 */
public interface Register {

    /**
     * 初始化注册服务
     * @param register
     */
    void init(URI register);

    /**
     * 注册服务提供者
     * @param uri
     */
    void registerProvider(String name, URI uri);

    /**
     * 注册服务消费者
     * @param name
     * @param uri
     */
    void registerConsumer(String name, URI uri);

    /**
     * 获取服务列表
     * @param name
     * @return
     */
    Set<URI> fetch(String name);

    /**
     * 订阅
     * @param name
     * @param callback
     */
    void subscribe(String name, SubscribeCallback callback);
}
